package cn.jetpiece.cloud.common.app.modular.message.entity;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * 系统通告表
 *
 * @author jetpiece
 * @since 2022-11-16
 */
@Data
@TableName("common_announcement")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class Announcement implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
	@TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 租户编号
     */
    @TableField(value = "tenant_id")
    private Long tenantId;

    /**
     * 标题
     */
    @TableField(value = "title")
    private String title;

    /**
     * 内容
     */
    @TableField(value = "msg_content")
    private String msgContent;

    /**
     * 开始时间
     */
    @TableField(value = "start_time")
    private Date startTime;

    /**
     * 结束时间
     */
    @TableField(value = "end_time")
    private Date endTime;

    /**
     * 发布人
     */
    @TableField(value = "sender")
    private String sender;

    /**
     * 优先级（L低，M中，H高）
     */
    @TableField(value = "priority")
    private String priority;

    /**
     * 消息类型1:通知公告2:系统消息
     */
    @TableField(value = "msg_category")
    private String msgCategory;

    /**
     * 消息接收用户类型
     */
    @TableField(value = "msg_receiver_user_type")
    private String msgReceiverUserType;

    /**
     * 发布状态（0未发布，1已发布，2已撤销）
     */
    @TableField(value = "send_status")
    private String sendStatus;

    /**
     * 发布时间
     */
    @TableField(value = "send_time")
    private Date sendTime;

    /**
     * 撤销时间
     */
    @TableField(value = "cancel_time")
    private Date cancelTime;

    /**
     * 删除状态（0，正常，1已删除）
     */
    @TableField(value = "del_flag", fill= FieldFill.INSERT)
    private Integer delFlag;

    /**
     * 业务类型(email:邮件 bpm:流程)
     */
    @TableField(value = "bus_type")
    private String busType;

    /**
     * 业务id
     */
    @TableField(value = "bus_id")
    private String busId;

    /**
     * 打开方式(组件：component 路由：url)
     */
    @TableField(value = "open_type")
    private String openType;

    /**
     * 组件/路由 地址
     */
    @TableField(value = "open_page")
    private String openPage;

    /**
     * 创建人
     */
    @TableField(value = "create_by", fill= FieldFill.INSERT)
    private String createBy;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill= FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新人
     */
    @TableField(value = "update_by", fill= FieldFill.UPDATE)
    private String updateBy;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill= FieldFill.UPDATE)
    private Date updateTime;

    /**
     * 指定用户
     */
    @TableField(value = "user_ids")
    private String userIds;

    /**
     * 摘要
     */
    @TableField(value = "msg_abstract")
    private String msgAbstract;

    /**
     * 钉钉task_id，用于撤回消息
     */
    @TableField(value = "dt_task_id")
    private String dtTaskId;
}
